/*************************************************************************
/*
/*      Copyright 2004/02/03
/*      Author : Meng-Jer Tsai(Taiwan R.O.C)
/*      Email : mjtsai87@ms31.hinet.net
/*      Declaration and Agreement Statements:
/*      [1]This Program is free for redistribution with
/*         or without any modify of the source code containing
/*         in this source file on conditions that the Declaration
/*         and Agreement Statements is included.
/*      [2]If any damanage done to your computer system due to the
/*         execution of the source code in this file, no responsibility
/*         will be taken by the Author.
/*      [3]Any commercial binary executable product developed based on
/*         this source code must have the Copyright and all items in
/*         this Declaration and Agreement Statements in its User License
/*         Agreement, or will be regarded as inappropriate occupy of
/*         software creativity.
/*
/*************************************************************************/

/*************************************************************************
/*
/*      this is the definion header file for pseudo driver's mandantory
/*      routines
*/
/*************************************************************************/

NTSTATUS
  DriverEntry( 
    IN PDRIVER_OBJECT  DriverObject, 
    IN PUNICODE_STRING  RegistryPath 
	);

NTSTATUS
  AddDevice(
    IN PDRIVER_OBJECT  DriverObject,
    IN PDEVICE_OBJECT  PhysicalDeviceObject 
    );

VOID 
  DriverUnload( 
    IN PDRIVER_OBJECT  DriverObject 
    ); 

NTSTATUS
  PsdoDispatchCreate(
    IN PDEVICE_OBJECT  DeviceObject,
    IN PIRP  Irp
    );

NTSTATUS
  PsdoDispatchClose(
    IN PDEVICE_OBJECT  DeviceObject,
    IN PIRP  Irp
    );

NTSTATUS
  PsdoDispatchDeviceControl(
    IN PDEVICE_OBJECT  DeviceObject,
    IN PIRP  Irp
    );

/*
Per-Binding state information structure
*/


/*
Self-Defined I/O Control Code
*/
//I/O Control Code for Device Information retrieval
#define IOCTL_READ_DEVICE_INFO	          \
	CTL_CODE(		          \
		 FILE_DEVICE_UNKNOWN,	  \
		 0x800,			  \
		 METHOD_BUFFERED,	  \
		 FILE_ANY_ACCESS)

//I/O Control Code for Power Information retrieval
#define IOCTL_READ_POWER_INFO \
        CTL_CODE(	      \
        FILE_DEVICE_UNKNOWN,  \
        0x801,                \
        METHOD_BUFFERED,      \
        FILE_ANY_ACCESS)
